#encoding=utf-8
'''
Created on 2011-11-19

@author: guanyw

python version:2.6

'''
import unittest
from corpus.preprocess import sentence_to_triple_list, untag_sentence,\
    translate_number, year_translate, rep_num, merge_ne
from corpus.postprocess import is_number_match
from corpus import rte_pairs_from_train_pairs,\
    train_pairs_file_name, train_hypothesis_file_name,\
    rte_train_pairs_from_hypothesis, test_hypothesis_file_name,\
    rte_test_pairs_from_hypothesis

class Test(unittest.TestCase):


    def test_sentence_to_triple_list(self):
        sents = '但 /c /O 对方 /n /O 否认 /v /O 并 /c /O '
        pair_list = sentence_to_triple_list(sents.strip())
        wd_list = [wd for wd,pos,tag in pair_list]
        pos_list = [pos for wd,pos,tag in pair_list]
        ne_list = [tag for wd,pos,tag in pair_list]

        assert wd_list,['但','对方','否认','并']
        assert pos_list,['/c','/n','/v','/c']
        assert ne_list,['/O']*4


    def test_merge_ne(self):
        sents = '思科 /nz /B-Ni 公司 /n /E-Ni 公司 /n /S-Ni 思科 /nz /B-Ni 公司 /n /I-Ni 公司 /n /E-Ni '
        pair_list = sentence_to_triple_list(sents.strip())
        ne_l = merge_ne(pair_list)

        assert ','.join(ne_l)=='思科公司,公司,思科公司公司',True
        
    def test_untag_sentence(self):
        sents = '但 /c /O 对方 /n /O 否认 /v /b-sO 并 /c /O '
        sent_r = untag_sentence(sents)
        assert sent_r=='但对方否认并',True
        

    def test_rep_num(self):
        s = u'１０.５％'
        t= rep_num(s)
        assert t=='10.5%',True
        
    def test_translate_number(self):
        s = u'四十五天再过十天'
        t= translate_number(s,'n')

        assert t=='45天再过10天',True            

        
    def test_year_tans(self):
        s= u'第一九九一年'
        s,flag = year_translate(s)
        assert flag,True
        s=u'1991年'
        s,flag = year_translate(s)
        assert flag,True
        assert s=='一九九一年'
        
    def test_is_number_match(self):
        hyp = u'两 /m /B-Nm 艘 /q /E-Nm 搭载 /v /O 13 /m /B-Nm 名 /q /E-Nm 1991年 /m /o 超过 /d /O 4S /wp /n 60万 /m /O'
        txt = u'2 /m /B-Nm 艘 /q /E-Nm 十三 /m /B-Nm 具 /q /E-Nm 遗体 /n /O 全 /d /O 一九九一年 /m /o 100万 /m /O'
        
        assert is_number_match(txt,hyp),True
    
    
    def test_load_train_pairs(self):
        prs = rte_pairs_from_train_pairs.pairs(train_pairs_file_name)
        print prs[0]
        prs = rte_train_pairs_from_hypothesis.pairs(train_hypothesis_file_name)
        print prs[0]
        prs = rte_test_pairs_from_hypothesis.pairs(test_hypothesis_file_name)
        print prs[0]
if __name__ == "__main__":
    unittest.main()